哈囉大家好~
今天要進入資料庫的部分了!
Laravel框架的其中一個特色就是讓開發者不用撰寫純SQL語法的條件下,使用物件導向(OOP)的方式來操作資料庫裡面的數據。
透過這樣的方式可以降低撰寫錯誤語法的機率,也提高了程式碼的易讀性和維護容易度。
在正式開始撰寫程式碼前,先來簡單認識一下ORM(Object Relational Mapping)-物件關聯對映。通常ORM會用在撰寫物件導向架構的程式碼中,將物件映射到資料庫的表。
在Laravel框架中,會透過Eloquent ORM來操作資料庫的表格和數據,通常會為一個資料表建立對應的模型Model。
假設這個資料表students用來存放每個學生的基本資料。
首先先來試著建立一個資料表的Model:(app/Models/Student.php)
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
protected $table = 'students'; #這裡指定資料表的名稱 students
#這裡指定可以賦值的attribute
protected $filled = ['name', 'age', 'hobby'];
}
現在我想要在學生資料表裡面新增一筆新的紀錄,我可以將邏輯寫在controller中:
(假設這裡將post request傳遞的數據傳到addNewStudent() function)
<?php
namespace App\Http\Controllers;
use App\Models\Student;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function addNewStudent(Request $request): RedirectResponse
{
$student = new Student; #剛剛建立的資料表Model,透過和Model互動操作資料庫
$student->name = $request->name; #賦值給name attribute
$student->age = $request->age; #賦值給age attribute
$student->hobby = $request->hobby; #賦值給hobby attribute
$student->save();
return redirect('/students'); #數據新增完成,回到該路徑
}
}
除了上面的寫法之外,也可以把創建Model instance和賦值給attribute的部分合在一起寫:
use App\Models\Student;
$student = Student::create([
'name' => 'Peter Parker',
'age' => 18,
'hobby' => 'wall climbing'
]);
撰寫程式碼的過程不需要寫純SQL語句,透過直觀的方式,可以對資料庫所進行的操作一目瞭然!
今天大致瞭解了所謂「透過Model與資料庫互動」的概念,明天想要試著實際對資料庫做增刪查改。透過實際操作順便來驗證程式碼有沒有寫錯XD
那就明天見啦